用jackson包实现json、对象、Map之间的转换

您所在的位置:网站首页 json转map 用jackson包实现json、对象、Map之间的转换

用jackson包实现json、对象、Map之间的转换

2024-07-10 21:34:24| 来源: 网络整理| 查看: 265

主要用于测试学习用jackson包实现json、对象、Map之间的转换。

1、准备测试用的Java类

(1)Link类

Java代码  收藏代码 package test;      /**    * Description: 联系方式,被user使用   */   public class Link   {       private String phone; //移动电话       private String address; //地址       private String qq; //QQ              public String getPhone()       {           return phone;       }       public void setPhone(String phone)       {           this.phone = phone;       }       public String getAddress()       {           return address;       }       public void setAddress(String address)       {           this.address = address;       }       public String getQq()       {           return qq;       }       public void setQq(String qq)       {           this.qq = qq;       }   }  

 

(2)User类

 

Java代码  收藏代码

package test;      import java.util.Date;   import java.util.List;   import java.util.Map;   import java.util.Set;      /**    * Description: 用户,测试模型类   */   public class User   {       private String id; //标识       private String name;    //姓名       private int age;    //年龄       private double pay; //工资        private boolean valid;  //是否有效       private char one; //一个字符       private Date birthday;  //生日              private Link link; //联系方式,自定义              private Map map; //测试用       private List list; //测试用       private Set set; //测试用       public String getId()       {           return id;       }       public void setId(String id)       {           this.id = id;       }       public String getName()       {           return name;       }       public void setName(String name)       {           this.name = name;       }       public int getAge()       {           return age;       }       public void setAge(int age)       {           this.age = age;       }       public double getPay()       {           return pay;       }       public void setPay(double pay)       {           this.pay = pay;       }       public boolean isValid()       {           return valid;       }       public void setValid(boolean valid)       {           this.valid = valid;       }       public char getOne()       {           return one;       }       public void setOne(char one)       {           this.one = one;       }       public Date getBirthday()       {           return birthday;       }       public void setBirthday(Date birthday)       {           this.birthday = birthday;       }       public Link getLink()       {           return link;       }       public void setLink(Link link)       {           this.link = link;       }       public Map getMap()       {           return map;       }       public void setMap(Map map)       {           this.map = map;       }       public List getList()       {           return list;       }       public void setList(List list)       {           this.list = list;       }       public Set getSet()       {           return set;       }       public void setSet(Set set)       {           this.set = set;       }   }  

 

2、测试类,没用Junit,用Main()方法输出。

Java代码  收藏代码 package test;      import java.io.IOException;   import java.util.ArrayList;   import java.util.Date;   import java.util.HashMap;   import java.util.HashSet;   import java.util.List;   import java.util.Map;   import java.util.Set;   import org.codehaus.jackson.JsonGenerationException;   import org.codehaus.jackson.map.JsonMappingException;   import org.codehaus.jackson.map.ObjectMapper;      /**    * Description: 主要用于测试学习用jackson包实现json、对象、Map之间的转换   *    * Date: 2016年6月6日   * Time: 下午3:23:23   */   public class JsonTest   {          public static void main(String[] args) throws JsonGenerationException, JsonMappingException, IOException       {           User user=new User();           user.setId("01");           user.setName("张三");           user.setAge(33);           user.setPay(6666.88);           user.setValid(true);           user.setOne('E');           user.setBirthday(new Date(20l*366*24*3600*1000)); //1990年                      Link link = new Link();           link.setAddress("河南省济源市");           link.setPhone("13899995555");           link.setQq("123456");           user.setLink(link);                      Map map=new HashMap();           map.put("aa", "this is aa");           map.put("bb", "this is bb");           map.put("cc", "this is cc");           user.setMap(map);                      List list=new ArrayList(){};           list.add("普洱");           list.add("大红袍");           user.setList(list);                      Set set=new HashSet();           set.add("篮球");           set.add("足球");           set.add("乒乓球");           user.setSet(set);                      ObjectMapper mapper = new ObjectMapper(); //转换器                      //测试01:对象--json           String json=mapper.writeValueAsString(user); //将对象转换成json           System.out.println(json);           /* 结果如下:          {"id":"01","name":"张三","age":33,"pay":6666.88,"valid":true,"one":"E","birthday":1465185448998,          "link":{"phone":"13899995555","address":"河南省济源市","qq":"123456"},          "map":{"aa":"this is aa","bb":"this is bb","cc":"this is cc"},          "list":["普洱","大红袍"],          "set":["乒乓球","足球","篮球"]}                    注意点:(1) 日期--长整型 (2)List、Set均转成数组           */                      //测试02:json--map           Map m = mapper.readValue(json, Map.class); //json转换成map                      System.out.println("pay:"+m.get("pay").getClass().getName()); //java.lang.Double           System.out.println("valid:"+m.get("valid").getClass().getName()); //java.lang.Boolean           System.out.println("birthday:"+m.get("birthday").getClass().getName()); //java.lang.Long           System.out.println("link:"+m.get("link").getClass().getName()); //java.util.LinkedHashMap           System.out.println("map:"+m.get("map").getClass().getName()); //java.util.LinkedHashMap           System.out.println("list:"+m.get("list").getClass().getName()); //java.util.ArrayList           System.out.println("set:"+m.get("set").getClass().getName()); //java.util.ArrayList           /*  结果如下:              pay:java.lang.Double              valid:java.lang.Boolean              birthday:java.lang.Long              link:java.util.LinkedHashMap              map:java.util.LinkedHashMap              list:java.util.ArrayList              set:java.util.ArrayList                            注意点:(1) 日期--长整型  (2)map、子对象均转换成了LinkedHashMap (3)List、Set均转成ArrayList           */                      //测试03:map--json           json=mapper.writeValueAsString(m); //map转json           System.out.println(json); //与之前格式完全相同,说明经过map转换后,信息没有丢失                      //测试04:json--对象           User u=mapper.readValue(json, User.class); //json转java对象。经测,转成对象后,一切恢复正常           System.out.println("pay:"+u.getPay());           System.out.println("valid:"+u.isValid());           System.out.println("birthday:"+u.getBirthday());           System.out.println("link:"+u.getLink());           System.out.println("map:"+u.getMap());           System.out.println("list:"+u.getList());           System.out.println("set:"+u.getSet());                      //测试05:其他转换           byte[] data=mapper.writeValueAsBytes(u); //对象转成二进制数组                             }      }  

 

3、输出结果

Other代码  收藏代码 {"id":"01","name":"张三","age":33,"pay":6666.88,"valid":true,"one":"E","birthday":632448000000,"link":{"phone":"13899995555","address":"河南省济源市","qq":"123456"},"map":{"aa":"this is aa","bb":"this is bb","cc":"this is cc"},"list":["普洱","大红袍"],"set":["乒乓球","足球","篮球"]}   pay:java.lang.Double   valid:java.lang.Boolean   birthday:java.lang.Long   link:java.util.LinkedHashMap   map:java.util.LinkedHashMap   list:java.util.ArrayList   set:java.util.ArrayList   {"id":"01","name":"张三","age":33,"pay":6666.88,"valid":true,"one":"E","birthday":632448000000,"link":{"phone":"13899995555","address":"河南省济源市","qq":"123456"},"map":{"aa":"this is aa","bb":"this is bb","cc":"this is cc"},"list":["普洱","大红袍"],"set":["乒乓球","足球","篮球"]}   pay:6666.88   valid:true   birthday:Tue Jan 16 08:00:00 CST 1990   link:test.Link@350385f1   map:{aa=this is aa, bb=this is bb, cc=this is cc}   list:[普洱, 大红袍]   set:[足球, 乒乓球, 篮球]  

 

摘抄自:http://rsy.iteye.com/blog/2303323



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭